package com.dlc.beijingrfid.net.protocol;

import com.dlc.commonlibrary.utils.LogPlus;
import com.dlc.beijingrfid.net.bean.LoginBean;
import com.dlc.beijingrfid.net.bean.MsgBean;
import com.dlc.beijingrfid.net.bean.NoticeNoreadsBean;
import com.dlc.beijingrfid.net.bean.NoticeReadBean;
import com.dlc.beijingrfid.net.bean.RegisterBean;
import com.dlc.beijingrfid.net.bean.SimpleBean;
import com.dlc.beijingrfid.net.protocol.base.HttpProtocol;
import com.lzy.okgo.model.HttpParams;
import java.io.File;
import rx.Observable;

/**
 * 用户相关协议，注册登录，设置用户信息之类的
 */
public class UserProto extends HttpProtocol {

    private UserProto() {
    }

    private static class InstanceHolder {
        private static final UserProto sProtocol = new UserProto();
    }

    public static UserProto get() {
        return InstanceHolder.sProtocol;
    }

    /**
     * 1 登录
     *
     * @param account  用户名
     * @param password 密码
     */
    public Observable<LoginBean> login(String account, String password, String error) {
        HttpParams httpParams = new HttpParams();
        httpParams.put("account", account);
        httpParams.put("password", password);
        LogPlus.i("--------username_login--------");
        return rxPost("login", httpParams, LoginBean.class, false, error);
    }

    /**
     * 获取验证码
     *
     * @param account
     * @param Callback
     */
    public void getCheckCode(String account, Callback<SimpleBean> Callback) {
        HttpParams params = new HttpParams();
        params.put("account", account);
        post("sms", params, SimpleBean.class, false, Callback);
    }

    /**
     * 重设密码
     *
     * @param account
     * @param Callback
     */
    public void resetPassword(String account, String password, String sms, Callback<LoginBean> Callback) {
        HttpParams params = new HttpParams();
        params.put("account", account);
        params.put("password", password);
        params.put("sms", sms);
        post("forgot", params, LoginBean.class, false, Callback);

    }

    /**
     * 修改头像
     *
     * @param file
     * @param Callback
     */
    public void alterHead(File file, Callback<LoginBean> Callback) {
        HttpParams params = new HttpParams();
        //params.put("avatar",file);
        params.put("avatar", file);
        post("edit", params, LoginBean.class, true, Callback);
    }

    /**
     * 意见反馈
     *
     * @param text
     * @param Callback
     */
    public void opinionFeedback(String text, Callback<SimpleBean> Callback) {
        HttpParams params = new HttpParams();
        params.put("title", 1);
        params.put("text", text);
        post("feedback_edit", params, SimpleBean.class, true, Callback);

    }

    /**
     * 消息列表
     *
     * @param callback
     */
    public void getMsg(Callback<MsgBean> callback) {
        post("notice", null, MsgBean.class, true, callback);
    }

    public void readMsg(String id, Callback<NoticeReadBean> Callback) {
        HttpParams params = new HttpParams();
        params.put("id", id);
        post("notice_read", params, NoticeReadBean.class, true, Callback);
    }

    public Observable<RegisterBean> register(String code, String error) {
        HttpParams params = new HttpParams();
        params.put("code", code);

        return rxPost("is_registered", params, RegisterBean.class, false, error);
    }
    public void notice_noreads( Callback<NoticeNoreadsBean> Callback) {
        HttpParams params = new HttpParams();
        post("notice_noreads", params, NoticeNoreadsBean.class, true, Callback);
    }

   /* public void alterHead(File file, Callback<LoginBean> Callback){
        HttpParams params=new HttpParams();
        //params.put("avatar",file);
        params.put("avatar",file);
        post("edit",params,LoginBean.class,false,Callback);
    }*/


    //
    ///**
    // * 4 用户名密码登录
    // *
    // * @param username 用户名
    // * @param password 密码
    // */
    //public Observable<LoginBean> usernameLogin(String username, String password, String error) {
    //    HttpParams httpParams = new HttpParams();
    //    httpParams.put("username", username);
    //    httpParams.put("password", password);
    //    LogPlus.i("--------username_login--------");
    //    return rxPost("username_login", httpParams, LoginBean.class, error);
    //}
    //
    ///**
    // * 用户名密码注册
    // *
    // * @param username
    // * @param password
    // * @param nickname
    // * @param mobile
    // * @param error
    // * @return
    // */
    //public Observable<SimpleBean> usernameRegister(String username, String password,
    //    String nickname, String mobile, String error) {
    //    HttpParams httpParams = new HttpParams();
    //    httpParams.put("user_username", username);
    //    httpParams.put("user_password", password);
    //    if (!TextUtils.isEmpty(nickname)) {
    //        httpParams.put("user_nickname", nickname);
    //    }
    //    if (!TextUtils.isEmpty(mobile)) {
    //        httpParams.put("user_mobile", mobile);
    //    }
    //    LogPlus.i("--------username_login--------");
    //    return rxPost("username_register", httpParams, SimpleBean.class, error);
    //}
    //
    ///**
    // * 29 获取用户信息
    // *
    // * @param error
    // * @return
    // */
    //public Observable<MyUserInfoBean> getUserInfo(String error) {
    //
    //    HttpParams httpParams = new HttpParams();
    //    httpParams.put("token", UserHelper.newInstance().getToken());
    //    LogPlus.i("--------get_user_info--------");
    //    return rxPost("get_user_info", httpParams, MyUserInfoBean.class, error);
    //}
    //
    ///**
    // * 获取用户信息，这时需要传入toekn，只有获取用户资料成功后，才保存toekn
    // *
    // * @param token 需要传入token
    // * @param error
    // * @return
    // */
    //public Observable<MyUserInfoBean> getMyUserInfoWithToken(final String token, String error) {
    //
    //    HttpParams httpParams = new HttpParams();
    //    httpParams.put("token", token);
    //    httpParams.put("user_type", "my");
    //    LogPlus.i("--------get_user_info--------");
    //
    //    return rxPost("get_user_info", httpParams, MyUserInfoBean.class, error).doOnNext(
    //        new Action1<MyUserInfoBean>() {
    //            @Override
    //            public void call(MyUserInfoBean myUserInfoBean) {
    //                UserHelper.get().saveToken(token);
    //            }
    //        });
    //}
    //
    ///**
    // * 保存用户资料
    // *
    // * @param httpParams 需要修改的字段参数，已经添加了token，不需再额外填充token
    // * @param error 错误提示信息
    // * @return
    // */
    //public Observable<SimpleBean> saveUserInfo(HttpParams httpParams, String error) {
    //    httpParams.put("token", UserHelper.get().getToken());
    //    return rxPost("save_user_info", httpParams, SimpleBean.class, error);
    //}
    //
    ///**
    // * 保存用户头像
    // *
    // * @param avatarUrl
    // * @param error
    // * @return
    // */
    //public Observable<SimpleBean> saveUserAvatar(String avatarUrl, String error) {
    //    HttpParams httpParams = new HttpParams();
    //    httpParams.put("user_avatar", avatarUrl);
    //    return saveUserInfo(httpParams, error);
    //}
    //
    ///**
    // * 保存用户昵称
    // *
    // * @param nickname
    // * @param error
    // * @return
    // */
    //public Observable<SimpleBean> saveNickname(String nickname, String error) {
    //    HttpParams httpParams = new HttpParams();
    //    httpParams.put("user_nickname", nickname);
    //    return saveUserInfo(httpParams, error);
    //}
    //
    ///**
    // * 保存性别
    // *
    // * @param isMale
    // * @param error
    // * @return
    // */
    //public Observable<SimpleBean> saveGender(boolean isMale, String error) {
    //    HttpParams httpParams = new HttpParams();
    //    httpParams.put("user_sex", isMale ? 1 : 0);
    //    return saveUserInfo(httpParams, error);
    //}
    //
    ///**
    // * 保存签名
    // *
    // * @param sign
    // * @param error
    // * @return
    // */
    //public Observable<SimpleBean> saveSign(String sign, String error) {
    //    HttpParams httpParams = new HttpParams();
    //    httpParams.put("user_sign", sign);
    //    return saveUserInfo(httpParams, error);
    //}
    //
    ///**
    // * 保存图片，头像，封面等
    // *
    // * @param file
    // * @param error
    // * @return
    // */
    //public Observable<String> savaImage(File file, String error) {
    //    return FileProto.get().upload(file, error).map(new Func1<UploadFileBean, String>() {
    //        @Override
    //        public String call(UploadFileBean uploadFileBean) {
    //            return uploadFileBean.data.file;
    //        }
    //    });
    //}
    //
    ///**
    // * 保存图片，头像，封面等
    // *
    // * @param path
    // * @param error
    // * @return
    // */
    //public Observable<String> savaImage(String path, String error) {
    //    return FileProto.get().upload(path, error).map(new Func1<UploadFileBean, String>() {
    //        @Override
    //        public String call(UploadFileBean uploadFileBean) {
    //            return uploadFileBean.data.file;
    //        }
    //    });
    //}
    //
    ///**
    // * todo 保存密码，暂时别动这个接口，会导致无法再登录
    // *
    // * @param password
    // * @param error
    // * @return
    // */
    //public Observable<SimpleBean> savePassword(String password, String error) {
    //    HttpParams httpParams = new HttpParams();
    //    httpParams.put("user_password", password);
    //    return saveUserInfo(httpParams, error);
    //}
    //
    ///**
    // * 反馈内容
    // *
    // * @param feedback
    // */
    //public Observable<Integer> feedback(String feedback) {
    //    HttpParams params = new HttpParams();
    //    params.put("token", UserHelper.get().getToken());
    //    params.put("content", feedback);
    //    return rxSimplePost("add_feedback", params);
    //}
    //
    ///**
    // * 获取我的关注
    // */
    //public Observable<AttentionBean> getAttentionCount() {
    //    HttpParams params = new HttpParams("token", UserHelper.newInstance().getToken());
    //    return rxPost("get_my_attention", params, AttentionBean.class, null);
    //}
    //
    ///**
    // * 获取我的粉丝
    // */
    //public Observable<FansBean> getFans() {
    //    HttpParams params = new HttpParams("token", UserHelper.get().getToken());
    //    return rxPost("get_my_fans", params, FansBean.class, null);
    //}
    //
    ///**
    // * 获取排行榜单
    // */
    //public Observable<LeaderBoardBean> getBoard() {
    //    return rxPost("get_rank_list", null, LeaderBoardBean.class, null);
    //}
    //
    ///**
    // * 发现(推荐)页面
    // *
    // * @param err
    // * @return
    // */
    //public Observable<DiscoveryBean> getDiscoveryRooms(String err) {
    //    HttpParams params = new HttpParams();
    //    params.put("token", UserHelper.get().getToken());
    //    return rxPost("get_groom_room", params, DiscoveryBean.class, err);
    //}
    //
    ///**
    // * 关注id
    // *
    // * @param attention_uid
    // */
    //public Observable<ToAttentionBean> toAttention(int attention_uid) {
    //    HttpParams params = new HttpParams();
    //    params.put("token", UserHelper.get().getToken());
    //    params.put("target_id", attention_uid);
    //    return rxPost("attention_anchor", params, ToAttentionBean.class, null);
    //}
    //
    //public Observable<SearchBean> search(String screenKey) {
    //    HttpParams params = new HttpParams();
    //    params.put("token", UserHelper.get().getToken());
    //    return rxPost("search_anchor", params, SearchBean.class, null);
    //}

    /**
     * 修改用户信息
     *
     * @param params
     * @param loginBeanCallback
     * @author kawaimisashi
     */
    public void alterUserMsg(HttpParams params, Callback<LoginBean> loginBeanCallback) {
        post("edit", params, LoginBean.class, true, loginBeanCallback);
    }
}
